批量插入
1 | <insert id="insertByBatch" parameterType="list" keyProperty="id" useGeneratedKeys="true"> |
1 | void insertByBatch(@Param("list") List<ProductList> productLists); |
对于foreach标签的解释参考了网上的资料,具体如下:
foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。
foreach元素的属性主要有 item,index,collection,open,separator,close。
- item表示集合中每一个元素进行迭代时的别名
- index指定一个名字,用于表示在迭代过程中,每次迭代到的位置
- open表示该语句以什么开始
- separator表示在每次进行迭代之间以什么符号作为分隔符
- close表示以什么结束
在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况 下,该属性的值是不一样的,主要有一下3种情况:
- 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
- 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
- 如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map
使用批量插入执行的SQL语句应该等价于:
1 | insert into redeem_code (batch_id, code, type, facevalue,create_user,create_time) |
批量删除
1 | <delete id="deleteByBatch" parameterType="java.lang.String"> |
1 | int deleteByBatch(@Param("deleteIdArray") List<String> deleteIdArray); |
批量更新
单个字段
1 | <update id="updateByBatch" parameterType="java.util.List"> |
单个字段方法二
1 | <update id="updateByBatch" parameterType="java.util.List"> |
多个字段
1 | <update id="updateBatch" parameterType="java.util.List"> |
1 | int updateBatch(List<WaterEle> list); |
1 | <update id="updateByBatch" parameterType="java.util.List"> |
1 | void updateByBatch(@Param("list") List<ProductList> productLists); |